/**
 * 
 */
/*
*   对Ajax的封装,使用之前先引用jQuery类库、bootstrap.js、bootstraptable.js、CommonFunc.js
*
*/

/*
* 封装ajax的调用方法，使用之前先引用jQuery类库
* 增加了对异常的处理
* error中处理的是对我们未捕捉的异常，将采取直接弹出错误框的形式
*/
function AjaxInvoke(url, data, type, succcallback, async) {
    if (data == null || data.length < 1) {
        $.ajax({
            type: type,
            dataType: "json",
            url: url,
            async: async,
            timeout: 1800000,   //超时设置为半小时，应对数据量超大的情况
            success: function (d) {
                if (succcallback != null) {
                    succcallback(d);
                }
            },
            error: function (d) {
                if (d.status == 500) {
                    //alert("内部错误，请联系网站管理人员。");
                    DialogOKSimple("内部错误，请联系网站管理人员。");
                } else if (d.status == 404) {
                    //alert("服务器找不到请求的网页，请联系网站管理人员。");
                    DialogOKSimple("服务器找不到请求的网页，请联系网站管理人员。");
                }
            }
        });
    } else {
        $.ajax({
            type: type,
            dataType: "json",
            url: url,
            data: data,
            async: async,
            timeout: 1800000,   //超时设置为半小时，应对数据量超大的情况
            success: function (d) {
                if (succcallback != null) {
                    succcallback(d);
                }
            },
            error: function (d) {
                if (d.status == 500) {
                    //alert("内部错误，请联系网站管理人员。");
                    DialogOKSimple("内部错误，请联系网站管理人员。");
                } else if (d.status == 404) {
                    //alert("服务器找不到请求的网页，请联系网站管理人员。");
                    DialogOKSimple("服务器找不到请求的网页，请联系网站管理人员。");
                }
            }
        });
    }
}

/*
 * 封装ajax的调用方法，使用之前先引用jQuery类库 增加了对异常的处理
 * error中处理的是对我们未捕捉的异常，将采取直接弹出错误框的形式
 * 返回从url取得的数据的DataObject中的数据
 */
function AjaxReturn(url, data, type, async) {
    var result;
    if (data == null || data.length < 1) {
        $.ajax({
            type: type,
            dataType: "json",
            url: url,
            async: async,
            success: function (d) {
                result = d.DataObject;

            },
            error: function (d) {
                if (d.status == 500) {
                    //alert("内部错误，请联系网站管理人员。");
                    DialogOKSimple("内部错误，请联系网站管理人员。");
                } else if (d.status == 404) {
                    //alert("服务器找不到请求的网页，请联系网站管理人员。");
                    DialogOKSimple("服务器找不到请求的网页，请联系网站管理人员。");
                }
            }
        });
    } else {
        $.ajax({
            type: type,
            dataType: "json",
            url: url,
            data: data,
            async: async,
            success: function (d) {
                result = d.DataObject;

            },
            error: function (d) {
                if (d.status == 500) {
                    //alert("内部错误，请联系网站管理人员。");
                    DialogOKSimple("内部错误，请联系网站管理人员。");
                } else if (d.status == 404) {
                    //alert("服务器找不到请求的网页，请联系网站管理人员。");
                    DialogOKSimple("服务器找不到请求的网页，请联系网站管理人员。");
                }
            }
        });
    }

    return result;
}

/* 对BootstrapTable的封装，使用之前先引用jQuery类、BootStrap、BootstrapTable类库 
 * 传参divID,可以是要生成BootstrapTable的div的id值，也可以直接传要生成BootstrapTable的$对象
 * 传参options， 配置项Json对象
 * 增加了对异常的处理
 * onLoadError中处理的是对我们未捕捉的异常，将采取直接弹出错误框的形式
 * 返回基于传入的divID生成的BootstrapTable
 */
function GetBootstrapTableByObj(divID, options) {
    var $div = typeof (divID) == "string" ? $("#" + divID) : divID
    return $div.bootstrapTable({
        height: options.height == undefined ? 530 : options.height,
        method: "post",
        url: options.url == undefined ? null : options.url,//额外参数并入url
        data: options.data == undefined ? [] : options.data,
        queryParamsType: "limit",//limit:search/sort/order/limit/offset; pageSize/pageNumber/searchText/sortName/sortOrder
        queryParams: options.queryParams == undefined ? function (params) { return params } : options.queryParams,//查询参数
        toolbar: options.toolbar == undefined ? null : options.toolbar,//工具栏
        toolbarAlign: 'left',//工具栏位置
        showRefresh: options.showRefresh == undefined ? true : options.showRefresh,//刷新按钮
        showToggle: options.showToggle == undefined ? false : options.showToggle,//卡片展示按钮
        cardView: false,//默认卡片展示
        showColumns: options.showColumns == undefined ? false : options.showColumns,//显示列选择按钮
        showPaginationSwitch: false,//分页显示、隐藏

        search: options.search == undefined ? true : options.search,//启用搜索
        trimOnSearch: true,//忽略空白搜索文本

        striped: false, // 隔行加亮
        clickToSelect: true,//点击选择
        singleSelect: options.singleSelect == undefined ? true : options.singleSelect,//单选
        classes: options.classes == undefined ? 'table table-hover' : options.classes, //table-no-bordered去掉表格边框
        undefinedText: '',//undefine文本展示
        detailView: options.detailView == undefined ? false : options.detailView,//详细视图
        detailFormatter: options.detailFormatter == undefined ? function (index, row) { return ''; } : options.detailFormatter,//详细视图函数
        rowStyle: options.rowStyle == undefined ? function (row, index) { return {}; } : options.rowStyle,//行风格函数,传null使用默认值(row: 该行的数据,index: 该行的序号)

        idField: options.idField == undefined ? "ID" : options.idField,
        uniqueId: options.uniqueId == undefined ? "ID" : options.uniqueId,

        pageSize: options.pageSize == undefined ? 10 : options.pageSize,//分页大小
        pageNumber: options.pageNumber == undefined ? 1 : options.pageNumber,//初始页
        pagination: options.pagination == undefined ? true : options.pagination, // 开启分页功能
        smartDisplay: true,//智能分页
        pageList: options.pageList == undefined ? [10, 50, 100, 500] : options.pageList,//分页大小列表
        sidePagination: options.sidePagination == undefined ? "server" : options.sidePagination, // 分页端：client or server
        responseHandler: options.responseHandler == undefined ? function (ret) { return { "total": ret.Message, "rows": ret.DataObject } } : options.responseHandler,
        contentType: 'application/json',
        dataType: "json",

        columns: options.columns,

        onSort: options.onSort == undefined ? function (name, order) { return true; } : options.onSort,//排序之前
        onSearch: options.onSearch == undefined ? function (text) { return false; } : options.onSearch,//查询之后
        onClickRow: options.onClickRow == undefined ? function (row, $element) { return false; } : options.onClickRow,//单击行事件
        onDblClickRow: options.onDblClickRow == undefined ? function (row, $element) { return false; } : options.onDblClickRow,//双击行事件
        onCheck: options.onCheck == undefined ? function (row) { return false; } : options.onCheck,//选中事件
        onUncheck: options.onUncheck == undefined ? function (row) { return false; } : options.onUncheck,//取消选中事件
        onCheckAll: options.onCheckAll == undefined ? function (rows) { return false; } : options.onCheckAll,//全选事件
        onUncheckAll: options.onUncheckAll == undefined ? function (rows) { return false; } : options.onUncheckAll,//全不选事件
        onLoadSuccess: options.onLoadSuccess == undefined ? function () { return false } : options.onLoadSuccess,//加载成功
        onLoadError: function (status) {
            if (status == 500) {
                //alert("内部错误，请联系网站管理人员。");
                DialogOKSimple("内部错误，请联系网站管理人员。");
            } else if (status == 404) {
                //alert("服务器找不到请求的网页，请联系网站管理人员。");
                DialogOKSimple("服务器找不到请求的网页，请联系网站管理人员。");
            }
            return false;
        }

    });
}
